copy on write

리눅스 프로세스
    프로세스당 4GB의 가상 메모리 할당
    3-4GB(Kernel Space)
    1-3GB(User Space)

    실제로 커널에 할당한 가상 메모리는 프로세스간 공유
copy on write
    fork는 새로운 프로세스 공간 생성 후, 기존 프로세스 공간 복사
    -> 4GB를 복사한다면, 생성 시간이 오래 걸림

자식 프로세스 생성시, 부모 프로세스 페이지를 우선 사용
부모 또는 자식 프로세스가 해당 페이지를 읽기가 아닌, 쓰기를 할 때 페이지를 복사하고, 분리함

프로세스 생성 시간을 줄일 수 있다.
새로 생성된 프로세스에 새롭게 할당되어야 하는 페이지 수도 최소화
read할 때, Parent Process에서 fork() 함수가 실행되어 Child Process가 생성되었을 때,
Child Table의 Page Table를 Parent Process의 Physical Memory address를 포인팅(kernel 공간 공유하는 기술과 유사)

Child Process에서 write할 때, Physical Memory에서 해당 페이지를 copy
Child Table의 Page Table 새로 복사한 Physical Memory address로 수정